package org.acb.sgp.managedbeans;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.acb.sgp.beans.ObjetoEvento;
import org.acb.sgp.beans.Regla;
import org.acb.sgp.service.BusinessLayerService;
import org.acb.sgp.service.impl.BusinessLayerServiceImpl;
import org.acb.sgp.utils.FacesUtil;

@ManagedBean
@ViewScoped
public class PreReglaBean implements Serializable {

	private static final long serialVersionUID = 1L;
	private final BusinessLayerService service = new BusinessLayerServiceImpl();
    private Integer categoriaId;
    private String nombre;
    
    private Regla base;
    private List<ObjetoEvento> objetos;
    private List<ObjetoEvento> listObjetos;
    private List<Regla> reglas;

    public List<Regla> getListarReglas() {
		return reglas;
	}

	public void setListarReglas(List<Regla> listReglas) {
		this.reglas = listReglas;
	}

	public List<ObjetoEvento> getListObjetos() {
		return listObjetos;
	}

	public void setListObjetos(List<ObjetoEvento> listObjetos) {
		this.listObjetos = listObjetos;
	}

	@PostConstruct
    public void init() {        
        base = new Regla();
        objetos = service.listaObjetoEvento();
        buscar();
    }
    
    public List<ObjetoEvento> getListarObjetos(){    	
    	return objetos;
    }

    public void buscar() {       
    	reglas = service.buscarReglas(base);
    }

    public void nuevo() {
        base = new Regla();
    }
    
    public void evaluar(){        
       for(String reg :service.evaluarRegla(base)){
           System.out.println(">>>"+reg);
       }
    }

    public void registrar() {
        service.registrarRegla(base);
        FacesUtil.closeDialog("registrar");
        if(base.getCod_base()==0){
        	FacesUtil.showMessage("REGLA GUARDADA ", FacesUtil.INFO);	
        }else{
        	FacesUtil.showMessage("REGLA GUARDADA: " + base.getNom_base(), FacesUtil.INFO);
        }
        base =new Regla();
        buscar();               
    }

    public void eliminar(Regla pRegla) {
        service.eliminarRegla(pRegla);
        FacesUtil.showMessage("REGLA ELIMINADA", FacesUtil.INFO);
        buscar();        
    }
    
    public Integer getCategoriaId() {
        return categoriaId;
    }

    public void setCategoriaId(Integer categoriaId) {
        this.categoriaId = categoriaId;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Regla getBase() {
		return base;
    }

    public void setBase(Regla base) {
		this.base = base;
    }
}
